package main

import "fmt"

/*
自己封装，让代码调用类似于try catch
*/
/*
method invoked!!
异常在这里recover。。test panic
main end...
*/
func main() {
	Try(func() {
		fmt.Println("method invoked!!")
		panic("test panic")
	}, func(err interface{}) {
		fmt.Println("异常在这里recover。。" + err.(string))
	})
	fmt.Println("main end...")
}

func Try(fun func(), handler func(interface{})) {
	defer func() {
		if err := recover(); err != nil {
			handler(err)
		}
	}()
	fun()
}
